package vmcs.controller;

import vmcs.entity.StoreItem;
import vmcs.observer.StoreItemChangeManager;
import vmcs.observer.StoreItemChangeManagerRegistry;
import vmcs.observer.StoreItemChangeManagerRegistry.StoreItemType;
import vmcs.observer.StoreItemObserver;

public class DispenseController implements StoreItemObserver {

    public DispenseController() {
        // OBSERVER IMPL BEGIN

        // get change manager for drink store item
        StoreItemChangeManager drinkMgr = StoreItemChangeManagerRegistry.getManager(StoreItemChangeManagerRegistry.StoreItemType.Drink);
        // register itself for updates
        drinkMgr.register(this, StoreItemChangeManager.EVENT_QUANTITYDRINKCHANGE);
        drinkMgr.register(this, StoreItemChangeManager.EVENT_DRINKVALUECHANGE);
        StoreItemChangeManager cointMgr = StoreItemChangeManagerRegistry.getManager(StoreItemChangeManagerRegistry.StoreItemType.Cash);
        cointMgr.register(this, StoreItemChangeManager.EVENT_QUANTITYCOINCHANGE);
        // OBSERVER IMPL END
    }

    // OBSERVER IMPL BEGIN
	/* (non-Javadoc)
     * @see vmcs.observer.StoreItemObserver#update(vmcs.entity.StoreItem, int)
     */
    @Override
    public void update(StoreItem storeItem, int event) {
        if (event == StoreItemChangeManager.EVENT_QUANTITYCOINCHANGE) {
        } else if (event == StoreItemChangeManager.EVENT_QUANTITYDRINKCHANGE) {
        } else if (event == StoreItemChangeManager.EVENT_DRINKVALUECHANGE) {
        } else {
            throw new ArrayIndexOutOfBoundsException("Invalid type passed: " + event);
        }
    }
    // OBSERVER IMPL END
}
